#include "Carga.hpp"

FILE *archivo;
void cargaArchivo(/*Lista<Router>*/Listarouter  *list,int *cantrout)
{
    DNS numOfPC;
    char caracter;
    int d;
    caracter=' ';
    int i=0;
    int j=0;
    int jmax=0;
    Lugar *reserv=new Lugar();
    archivo=fopen("ArchiConf.txt","r");
    Listarouter *final,*temp, ;//Lista<Router> *final,*temp;// 
    Router *temp2;
    final=list;//&listarout;
    if(archivo!=NULL)
    {                      
     /*Re corre el archivo, es cual debe terminar con un caracter f para indicarle el final. La matriz de ancho 
     de banda de conexiones debe ser cuadrada y simetrica ( aunque a decir que es simetrica, implica que es cuadrada),
     luego debe haber un renglon en blanco y despues debe estar indicado la cantidad de maquinas que tiene cada router a su cargo*/
        while(caracter!='f')
        {
            
            fscanf(archivo,"%d", &d);
            if (i==0)
            {
                Router r;    /*se genera el router y se lo agrega al final de la lista de routers*/
                r.ip=j;//-- se genera el router con ip=0 por que j inicia con cero
                r.reservorio=reserv;
                temp= new Listarouter(r);
                temp->agregar(final);
                final=temp;
            }
            if(jmax<=j)
                jmax=j;
            if(i<=jmax)
            {
                temp=list;
                while(temp)
                {
                    if(temp->getD()->ip==j)
                    {
                        temp->getD()->vectoranchobanda[i]=d;
                    }
                    temp=temp->siguiente();
                }
         
            if(i==jmax+1)
            {
                temp=list;//arout;
                temp = temp->siguiente();
                for(int tmp1=0;tmp1<=j;tmp1++)
                {
                    if(tmp1==j)
                    {
                        temp2=temp->getD();
                        temp2->generamaquinas(d);//cantidadmaquinas=d;      /* El router genera las d maquinas a su cargo*/
                        numOfPC.set(j, d);
                    }
                    else
                    {
                        temp = temp->siguiente();
                    }       
                }
            }
            j++;
            fgets(&caracter,2,archivo);
            if(caracter=='\n')
            {
                i++;
                j=0;
            }          
        }
       *cantrout=jmax+1; /*carga la cantidad de router generados*/
            /*llama al metod del router para generar las colas de entrada y salida hacia otros routers*/
        temp=list;//arout;
        while (temp) 
        {
            
            temp->getD()->generalistacolas();
             temp->getD()->mostrarcolas(); //no va
            temp = temp->siguiente();

        }
       
       numOfPC.setnumOfRouters(jmax+1);   
    }
}
